[XEND] Mark save record fd close-on-exec after calling xc_restore
authorTim Deegan <Tim.Deegan@xensource.com>
Wed, 14 Mar 2007 12:49:40 +0000 (12:49 +0000)
committerTim Deegan <Tim.Deegan@xensource.com>
Wed, 14 Mar 2007 12:49:40 +0000 (12:49 +0000)
so that qemu doesn't end up with an open fd on it
Signed-off-by: Tim Deegan <Tim.Deegan@xensource.com>
tools/python/xen/xend/XendCheckpoint.py

index 78811300925be31d0a206a1330ccbfddbcccaecd..be8c299634b8bfd6b09105c874063dd6dacbb204 100644 (file)
@@ -9,6 +9,7 @@ import os
 import re
 import string
 import threading
+import fcntl
 from struct import pack, unpack, calcsize
 
 from xen.util.xpopen import xPopen3
@@ -230,6 +231,15 @@ def restore(xd, fd, dominfo = None, paused = False):
 
         forkHelper(cmd, fd, handler.handler, True)
 
+        # We don't want to pass this fd to any other children -- we 
+        # might need to recover ths disk space that backs it.
+        try:
+            flags = fcntl.fcntl(fd, fcntl.F_GETFD)
+            flags |= fcntl.FD_CLOEXEC
+            fcntl.fcntl(fd, fcntl.F_SETFD, flags)
+        except:
+            pass
+
         if handler.store_mfn is None:
             raise XendError('Could not read store MFN')